<!DOCTYPE html>
<html class="writer-html5" lang="zh-CN">
<head>
  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>SGL使用指南 &mdash; SGL 0.1 文档</title>
      <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
      <link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
      <link rel="stylesheet" type="text/css" href="../_static/togglebutton.css" />
      <link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />

  
  <!--[if lt IE 9]>
    <script src="../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
        <script src="../_static/jquery.js"></script>
        <script src="../_static/underscore.js"></script>
        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script src="../_static/doctools.js"></script>
        <script src="../_static/clipboard.min.js"></script>
        <script src="../_static/copybutton.js"></script>
        <script>let toggleHintShow = 'Click to show';</script>
        <script>let toggleHintHide = 'Click to hide';</script>
        <script>let toggleOpenOnPrint = 'true';</script>
        <script src="../_static/togglebutton.js"></script>
        <script src="../_static/translations.js"></script>
        <script>var togglebuttonSelector = '.toggle, .admonition.dropdown';</script>
    <script src="../_static/js/theme.js"></script>
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="SGL开发手册" href="guide.html" />
    <link rel="prev" title="SGL简介" href="introduce.html" />
    <link href="../_static/style.css" rel="stylesheet" type="text/css">

</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >

          
          
          <a href="../index.html" class="icon icon-home">
            SGL
          </a>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="introduce.html">SGL简介</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">SGL使用指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">说明</a></li>
<li class="toctree-l2"><a class="reference internal" href="#mcu">MCU平台</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#sgl-conf-h">1. 在用户目录下创建一个sgl_conf.h配置文件</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">2. 更改sgl_conf.h配置文件</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">3. 注册显示显示设备</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">4. 编译</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#linux-framebuffer">Linux framebuffer平台</a></li>
<li class="toctree-l2"><a class="reference internal" href="#windows">Windows平台</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="guide.html">SGL开发手册</a></li>
<li class="toctree-l1"><a class="reference internal" href="debug/debug.html">调试</a></li>
</ul>

        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../index.html">SGL</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
      <li class="breadcrumb-item active">SGL使用指南</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/docs/transplant.rst.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  <section id="sgl">
<h1>SGL使用指南<a class="headerlink" href="#sgl" title="Permalink to this heading">¶</a></h1>
<section id="id1">
<h2>说明<a class="headerlink" href="#id1" title="Permalink to this heading">¶</a></h2>
<p>SGL的移植非常简单，用户只需要关注两个文件，sgl_conf.h和sgl.h文件。sgl_conf.h为SGL的配置文件，该文件中的所有宏用于配置SGL开启哪些功能或者选择哪种算法策略，sgl.h文件是用户必须包含的头文件。
对于GUI移植的用户来说，最关心的莫过于如何使用SGL，由于SGL支持多个平台，因此移植上会有微小差别，下面我们主要对MCU，Linux framebuffer和window平台来说明如何一步一步去使用SGL。
SGL和硬件相关的有两个结构体，分别是struct sgl_device_panel和struct sgl_device_panel这两个结构体。
struct sgl_device_panel结构体如下：</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="w"> </span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">sgl_device_panel</span><span class="w"> </span><span class="p">{</span>
<span class="linenos"> 2</span><span class="w">     </span><span class="n">sgl_color_t</span><span class="w"> </span><span class="o">*</span><span class="n">framebuffer</span><span class="p">;</span>
<span class="linenos"> 3</span><span class="w">     </span><span class="kt">int</span><span class="w"> </span><span class="n">buffer_size</span><span class="p">;</span>
<span class="linenos"> 4</span><span class="w">     </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">xres</span><span class="p">;</span>
<span class="linenos"> 5</span><span class="w">     </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">yres</span><span class="p">;</span>
<span class="linenos"> 6</span><span class="w">     </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">xres_virtual</span><span class="p">;</span>
<span class="linenos"> 7</span><span class="w">     </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">yres_virtual</span><span class="p">;</span>
<span class="linenos"> 8</span><span class="w">     </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">flush_area</span><span class="p">)(</span><span class="kt">int16_t</span><span class="w"> </span><span class="n">x1</span><span class="p">,</span><span class="w"> </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">y1</span><span class="p">,</span><span class="w"> </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">x2</span><span class="p">,</span><span class="w"> </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">y2</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">sgl_color_t</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">);</span>
<span class="linenos"> 9</span>
<span class="linenos">10</span><span class="w"> </span><span class="p">}</span><span class="n">sgl_device_panel_t</span><span class="p">;</span>
</pre></div>
</div>
<ul class="simple">
<li><p>framebuffer: 指向绘图缓存</p></li>
<li><p>buffer_size: 绘图缓存的大小（字节）</p></li>
<li><p>xres: 屏幕实际行分辨率</p></li>
<li><p>yres: 屏幕实际列分辨率</p></li>
<li><p>xres_virtual: 屏幕虚拟行分辨率</p></li>
<li><p>yres_virtual: 屏幕虚拟列分辨率</p></li>
<li><p>flush_area: 指向显示设备的绘制窗口函数，用于将缓存中的数据发送到屏幕上显示出来。</p></li>
</ul>
<p>在移植的过程中，只需要使用sgl_device_register()函数注册sgl_device_panel_t和sgl_device_event_t设备即可，如果没有输入设备，可以将sgl_device_event_t设置为NULL即可，例如下面：</p>
<div class="admonition tip">
<p class="admonition-title">小技巧</p>
<p>注册显示屏和触摸设备可以这样：sgl_device_register(&amp;tft_device_panel, &amp;touch_device_event);
仅仅只注册显示屏设备，则只需要sgl_device_register(&amp;tft_device_panel, NULL);</p>
</div>
<p>SGL有一个void sgl_task_handler(void)需要一直或者定时轮询执行，可以放在while中也可以放在定时器的中断服务函数中。例如：</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;sgl.h&quot;</span>
<span class="linenos"> 2</span><span class="p">...</span>
<span class="linenos"> 3</span><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos"> 4</span>
<span class="linenos"> 5</span><span class="w">     </span><span class="p">...</span>
<span class="linenos"> 6</span><span class="w">     </span><span class="n">sgl_device_register</span><span class="p">(</span><span class="o">&amp;</span><span class="n">tft_device_panel</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span>
<span class="linenos"> 7</span><span class="w">     </span><span class="n">sgl_init</span><span class="p">();</span>
<span class="linenos"> 8</span><span class="w">     </span><span class="p">...</span>
<span class="linenos"> 9</span>
<span class="linenos">10</span><span class="w">     </span><span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">11</span><span class="w">         </span><span class="p">...</span>
<span class="linenos">12</span><span class="w">         </span><span class="n">sgl_task_handler</span><span class="p">();</span>
<span class="linenos">13</span><span class="w">         </span><span class="p">...</span>
<span class="linenos">14</span><span class="w">     </span><span class="p">}</span>
<span class="linenos">15</span><span class="p">}</span>
</pre></div>
</div>
</section>
<section id="mcu">
<h2>MCU平台<a class="headerlink" href="#mcu" title="Permalink to this heading">¶</a></h2>
<section id="sgl-conf-h">
<h3>1. 在用户目录下创建一个sgl_conf.h配置文件<a class="headerlink" href="#sgl-conf-h" title="Permalink to this heading">¶</a></h3>
<blockquote>
<div><p>该配置文件的内容是SGL源码目录下的sgl_conf_template.h文件的内容，然后做一些更改。</p>
</div></blockquote>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>project
/path/to/your/directory
├──<span class="w"> </span>main.c<span class="w">      </span>-----&gt;<span class="w"> </span>用户的main.c文件
├──<span class="w"> </span>sgl_conf.h<span class="w">  </span>-----&gt;<span class="w"> </span>用户的配置文件（复制sgl_conf_template.h文件）
└──<span class="w"> </span><span class="nb">source</span><span class="w">      </span>-----&gt;<span class="w"> </span>SGL源码
<span class="w">    </span>├──<span class="w"> </span>core
<span class="w">    </span>├──
<span class="w">    </span>...
<span class="w">    </span>├──<span class="w"> </span>widget
<span class="w">    </span>...
<span class="w">    </span>├──<span class="w"> </span>sgl_conf_template.h
<span class="w">    </span>└──<span class="w"> </span>sgl.h
</pre></div>
</div>
</section>
<section id="id2">
<h3>2. 更改sgl_conf.h配置文件<a class="headerlink" href="#id2" title="Permalink to this heading">¶</a></h3>
<blockquote>
<div><p>对于没有完整的显示缓存的MCU来说，配置文件一般如下，并且需要将该头文件的路径添加到项目的头文件路径中。</p>
</div></blockquote>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_DEBUG                      0</span>
<span class="linenos"> 2</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_LOG_LEVEL                  0</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span>
<span class="linenos"> 5</span><span class="w"> </span><span class="c1">//开启动画：TODO</span>
<span class="linenos"> 6</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_POWERON_ANIM               0</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="w"> </span><span class="c1">//配置字体抗锯齿深度，默认采用4bit抗锯齿</span>
<span class="linenos"> 9</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FONT_PIXEL_BIT             4</span>
<span class="linenos">10</span>
<span class="linenos">11</span>
<span class="linenos">12</span><span class="w"> </span><span class="c1">//显示屏面板的像素颜色深度，默认为32bit</span>
<span class="linenos">13</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_PANEL_PIXEL_DEPTH          32</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="w"> </span><span class="c1">//FrameBuffer是否是内存映射方式</span>
<span class="linenos">16</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FRAMEBUFFER_MMAP           1</span>
<span class="linenos">17</span>
<span class="linenos">18</span><span class="w"> </span><span class="c1">//默认page背景颜色</span>
<span class="linenos">19</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_PAGE_COLOR                 SGL_WHITE</span>
<span class="linenos">20</span>
<span class="linenos">21</span><span class="w"> </span><span class="c1">//RGB颜色交换</span>
<span class="linenos">22</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_COLOR16_SWAP               0</span>
<span class="linenos">23</span>
<span class="linenos">24</span><span class="w"> </span><span class="c1">//1: standard混色</span>
<span class="linenos">25</span><span class="w"> </span><span class="c1">//2: fast混色</span>
<span class="linenos">26</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_MIXER_TYPE                 2</span>
<span class="linenos">27</span>
<span class="linenos">28</span><span class="w"> </span><span class="c1">//0: heap_0</span>
<span class="linenos">29</span><span class="w"> </span><span class="c1">//1: heap_1</span>
<span class="linenos">30</span><span class="w"> </span><span class="c1">//2: heap_2</span>
<span class="linenos">31</span><span class="w"> </span><span class="c1">//3: heap_3</span>
<span class="linenos">32</span><span class="w"> </span><span class="c1">//4: heap_4</span>
<span class="linenos">33</span><span class="w"> </span><span class="c1">//5: heap_tlsf</span>
<span class="linenos">34</span><span class="w"> </span><span class="c1">//6: libc</span>
<span class="linenos">35</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_HEAP_POLICY                5</span>
<span class="linenos">36</span><span class="w"> </span><span class="c1">//定义内存池的大小，单位KByte</span>
<span class="linenos">37</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_HEAP_POOL_SIZE             64</span>
<span class="linenos">38</span>
<span class="linenos">39</span>
<span class="linenos">40</span><span class="w"> </span><span class="c1">//定义事件的队列深度</span>
<span class="linenos">41</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_EVQUEUE_DEPTH              16</span>
<span class="linenos">42</span>
<span class="linenos">43</span><span class="w"> </span><span class="c1">//定义任务的队列深度</span>
<span class="linenos">44</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_TASKQUEUE_DEPTH            8</span>
<span class="linenos">45</span>
<span class="linenos">46</span>
<span class="linenos">47</span><span class="w"> </span><span class="c1">//是否开启SGL字体</span>
<span class="linenos">48</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FONT_CONSOLAS12            1</span>
<span class="linenos">49</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FONT_CONSOLAS15            1</span>
<span class="linenos">50</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FONT_SONG10                1</span>
<span class="linenos">51</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FONT_SONG23                1</span>
<span class="linenos">52</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_FONT_CASCADIA_MONO17       1</span>
<span class="linenos">53</span>
<span class="linenos">54</span><span class="w"> </span><span class="cp">#define SGL_CONFIG_TEXT_UTF8                  0</span>
</pre></div>
</div>
<p>对于初次使用SGL的用户可以先主要关注这两个宏：SGL_CONFIG_PANEL_PIXEL_DEPTH和SGL_CONFIG_FRAMEBUFFER_MMAP，其中SGL_CONFIG_PANEL_PIXEL_DEPTH宏用户配置显示屏的颜色深度，例如TFT显示屏
的颜色深度一般是16bit，因此对于MCU而言一般设置为16即可。SGL_CONFIG_FRAMEBUFFER_MMAP用户设置显示屏使用内存映射，只有对于Linuxfb或者windows的SDL2而言才设置该宏为1，对于MCU而言，设置0
即可。</p>
<div class="admonition note">
<p class="admonition-title">备注</p>
<p>有些情况下的MCU配备了外部SRAM，这个时候显示屏的缓存可以直接映射到外部的SRAM中，一般这类MCU内部自带TFT控制器。在这种情况下，SGL_CONFIG_FRAMEBUFFER_MMAP需要设置为1。</p>
</div>
</section>
<section id="id3">
<h3>3. 注册显示显示设备<a class="headerlink" href="#id3" title="Permalink to this heading">¶</a></h3>
<blockquote>
<div><p>对于MCU而言，一般需要提供一个绘制窗口的函数，用来将缓存中的数据发送到TFT上并显示出来，这个需要根据实际的显示设备来定义struct sgl_device_panel结构体，例如TFT的型号是240*240分辨率，
我们可以定义如下结构体：</p>
</div></blockquote>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="w"> </span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;sgl.h&quot;</span>
<span class="linenos"> 2</span>
<span class="linenos"> 3</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">tft_show_window</span><span class="p">(</span><span class="kt">int16_t</span><span class="w"> </span><span class="n">x1</span><span class="p">,</span><span class="w"> </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">y1</span><span class="p">,</span><span class="w"> </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">x2</span><span class="p">,</span><span class="w"> </span><span class="kt">int16_t</span><span class="w"> </span><span class="n">y2</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">sgl_color_t</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">)</span>
<span class="linenos"> 4</span><span class="w"> </span><span class="p">{</span>
<span class="linenos"> 5</span><span class="w">     </span><span class="p">...</span>
<span class="linenos"> 6</span><span class="w"> </span><span class="p">}</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="w"> </span><span class="p">...</span>
<span class="linenos"> 9</span><span class="w"> </span><span class="n">sgl_color_t</span><span class="w"> </span><span class="n">draw_buffer</span><span class="p">[</span><span class="mi">240</span><span class="o">*</span><span class="mi">40</span><span class="p">];</span>
<span class="linenos">10</span><span class="w"> </span><span class="n">sgl_device_panel_t</span><span class="w"> </span><span class="n">tft_panel</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">11</span><span class="w">                                 </span><span class="p">.</span><span class="n">framebuffer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">draw_buffer</span><span class="p">,</span>
<span class="linenos">12</span><span class="w">                                 </span><span class="p">.</span><span class="n">buffer_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">draw_buffer</span><span class="p">),</span>
<span class="linenos">13</span><span class="w">                                 </span><span class="p">.</span><span class="n">xres</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">240</span><span class="p">,</span>
<span class="linenos">14</span><span class="w">                                 </span><span class="p">.</span><span class="n">yres</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">240</span><span class="p">,</span>
<span class="linenos">15</span><span class="w">                                 </span><span class="p">.</span><span class="n">flush_area</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tft_show_window</span><span class="p">,</span>
<span class="linenos">16</span><span class="w">                                 </span><span class="p">};</span>
<span class="linenos">17</span>
<span class="linenos">18</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="linenos">19</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">20</span><span class="w">     </span><span class="c1">//只注册显示设备</span>
<span class="linenos">21</span><span class="w">     </span><span class="n">sgl_device_register</span><span class="p">(</span><span class="o">&amp;</span><span class="n">tft_panel</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span>
<span class="linenos">22</span><span class="w">     </span><span class="c1">//初始化sgl</span>
<span class="linenos">23</span><span class="w">     </span><span class="n">sgl_init</span><span class="p">();</span>
<span class="linenos">24</span><span class="w">     </span><span class="p">...</span>
<span class="linenos">25</span><span class="w">     </span><span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">26</span><span class="w">         </span><span class="p">...</span>
<span class="linenos">27</span><span class="w">         </span><span class="c1">//sgl的任务轮询</span>
<span class="linenos">28</span><span class="w">         </span><span class="n">sgl_task_handler</span><span class="p">();</span>
<span class="linenos">29</span><span class="w">         </span><span class="p">...</span>
<span class="linenos">30</span>
<span class="linenos">31</span><span class="w">     </span><span class="p">}</span>
<span class="linenos">32</span><span class="w"> </span><span class="p">}</span>
</pre></div>
</div>
</section>
<section id="id4">
<h3>4. 编译<a class="headerlink" href="#id4" title="Permalink to this heading">¶</a></h3>
<blockquote>
<div><p>编译整个工程后，需要将sgl_conf.h和sgl.h的文件所在的路径包含在项目工程的头文件路径中，编译完毕后，就可以将其下载到开发板上即可。</p>
</div></blockquote>
</section>
</section>
<section id="linux-framebuffer">
<h2>Linux framebuffer平台<a class="headerlink" href="#linux-framebuffer" title="Permalink to this heading">¶</a></h2>
</section>
<section id="windows">
<h2>Windows平台<a class="headerlink" href="#windows" title="Permalink to this heading">¶</a></h2>
</section>
</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="introduce.html" class="btn btn-neutral float-left" title="SGL简介" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="guide.html" class="btn btn-neutral float-right" title="SGL开发手册" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; 版权所有 2024, li-shanwen.</p>
  </div>

  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>